লারাভেল (Laravel) ফ্রেমওয়ার্কটি একটি শক্তিশালী টাস্ক শিডিউলিং সিস্টেম সরবরাহ করে, যার মাধ্যমে আপনি নির্দিষ্ট সময় বা নির্দিষ্ট সময় পর পর নির্দিষ্ট কাজগুলো অটোমেটিকভাবে চালাতে পারেন। এটি সিস্টেম অ্যাডমিন বা ডেভেলপারদের জন্য উপকারী, যারা সময় নির্ধারিত কাজের অটোমেশন করতে চান।
লারাভেল টাস্ক শিডিউলিং (Task Scheduling) একটি বিল্ট-ইন ফিচার যা আপনাকে নির্দিষ্ট সময় পর পর বা নির্দিষ্ট সময়ে কাজগুলো স্বয়ংক্রিয়ভাবে পরিচালনা করার সুযোগ দেয়। এটি অ্যাপ্লিকেশন বা সার্ভারে ক্রন (Cron) জবস ব্যবহার না করে সহজভাবে টাস্ক শিডিউল করা যায়।
লারাভেল টাস্ক শিডিউলিং কাজ করার জন্য প্রথমে আপনাকে একটি শিডিউলার তৈরি করতে হবে যা আপনার টাস্কগুলো নির্দিষ্ট সময়ে চলাবে। তারপর, আপনি Kernel ফাইলের মাধ্যমে এই শিডিউল করা কাজগুলো কনফিগার করবেন। লারাভেল শিডিউলিং স্বয়ংক্রিয়ভাবে cron
জবকে ব্যবহার করে কাজগুলো চালায়।
লারাভেল টাস্ক শিডিউলিং কাজ করার জন্য আপনাকে প্রথমে আপনার সার্ভারে একটি cron
জব সেট করতে হবে, যা প্রতি মিনিটে লারাভেল শিডিউলারকে চালাবে। এর জন্য আপনার সার্ভারের crontab
এ নিম্নলিখিত এন্ট্রি যুক্ত করতে হবে:
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
এই ক্রন জবটি প্রতি মিনিটে লারাভেল শিডিউলার চালাবে, যা নির্দিষ্ট কাজগুলি পরিচালনা করবে।
এখন, আপনি লারাভেল অ্যাপ্লিকেশনের app/Console/Kernel.php
ফাইলে শিডিউল করা কাজগুলো নির্ধারণ করবেন। এই ফাইলে schedule()
মেথডে আপনি আপনার টাস্ক বা কমান্ড শিডিউল করতে পারেন।
উদাহরণস্বরূপ:
protected function schedule(Schedule $schedule)
{
// প্রতিদিন রাত ১২টায় একটি টাস্ক চালানোর জন্য
$schedule->command('inspire')->dailyAt('00:00');
// প্রতি ঘন্টায় একটি আর্টিসান কমান্ড চালানো
$schedule->command('backup:run')->hourly();
}
এখানে, দুটি কাজ শিডিউল করা হয়েছে:
inspire
কমান্ডটি প্রতিদিন রাত ১২টায় চলবে।backup:run
কমান্ডটি প্রতি ঘন্টায় চলবে।লারাভেল আপনাকে টাস্ক শিডিউল করার জন্য অনেক অপশন প্রদান করে। কিছু গুরুত্বপূর্ণ অপশন হলো:
everyMinute()
: প্রতি মিনিটে টাস্ক চালানো।everyFiveMinutes()
: প্রতি ৫ মিনিটে টাস্ক চালানো।daily()
: প্রতিদিন টাস্ক চালানো।weekly()
: প্রতি সপ্তাহে টাস্ক চালানো।monthly()
: প্রতি মাসে টাস্ক চালানো।উদাহরণ:
$schedule->command('backup:run')->everyFiveMinutes();
আপনি চাইলে নিজের কাস্টম কোডও শিডিউল করতে পারেন। উদাহরণস্বরূপ, যদি আপনি একটি নির্দিষ্ট ফাংশনকে নির্দিষ্ট সময় পর পর চালাতে চান, তবে নিচের মতো কোড লিখতে পারেন:
$schedule->call(function () {
// আপনার কাস্টম কোড এখানে
DB::table('users')->where('status', 'inactive')->delete();
})->dailyAt('01:00');
এটি প্রতিদিন রাত ১টায় একটি নির্দিষ্ট কোড চালাবে যা inactive
স্ট্যাটাসযুক্ত ইউজারদের ডিলিট করবে।
টাস্ক শিডিউলিংয়ে মাঝে মাঝে রিসোর্স ব্যবস্থাপনা গুরুত্বপূর্ণ হয়ে ওঠে, বিশেষত যখন আপনার টাস্কগুলো বড় বা সময়সাপেক্ষ হয়। তাই টাস্ক শিডিউল করার সময় আপনাকে রিসোর্স ব্যবস্থাপনার দিকে নজর দিতে হবে।
উদাহরণস্বরূপ, আপনি চাইলে withoutOverlapping()
মেথড ব্যবহার করতে পারেন যাতে একযোগে একাধিক টাস্ক চলতে না পারে:
$schedule->command('backup:run')->hourly()->withoutOverlapping();
এটি নিশ্চিত করবে যে একাধিক ব্যাকআপ একই সময়ে চলছে না।
লারাভেল টাস্ক শিডিউলিং ব্যবহার করে আপনি অ্যাপ্লিকেশনের বিভিন্ন কাজ যেমন ব্যাকআপ তৈরি, ডাটাবেস ক্লিনিং, রিসোর্স আপডেট ইত্যাদি স্বয়ংক্রিয়ভাবে পরিচালনা করতে পারবেন। এটি ডেভেলপারদের জন্য একটি শক্তিশালী টুল, যা অ্যাপ্লিকেশন ম্যানেজমেন্ট এবং অপারেশনাল কাজগুলো আরও সহজ এবং কার্যকরী করে তোলে।